<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 17. 输出100-200之间所有的素数

        /* 判断n是否素数 */
        function isPrimeNumber(n) {
            if (n === 1) return false

            for (var i = 2; i <= n - 1; i++) {
                if (n % i === 0) {
                    // 一旦发现一个因子 斩立决（不需要接着遍历了）
                    // 立刻返回结果（不是素数）
                    return false
                }
            }

            // 将[2,n-1]都看了一遍 一个因子都没有 则n是素数
            return true
        }
        function printPrimeNumbers(start, end) {
            for (var i = start; i <= end; i++) {
                isPrimeNumber(i) && console.log(i);
            }
        }
        // printPrimeNumbers(1,100)

        //  18. 求s=a+aa+aaa+aaaa+....+aa...a的值，其中a是一个数字。例如2+22+222+2222
        function createStrangeExpr(a, n) {
            var expr = ""
            for (var i = 1; i <= n; i++) {

                var item = ""
                for (var j = 0; j < i; j++) {
                    item += a
                }

                expr += `${i === 1 ? '' : '+'}${item}`
            }
            return expr
        }
        // console.log( createStrangeExpr(5,10) );

        //  a = 1;
        //  1 + 11 + 111 + 1111
        //  19. 操场上 100 多人排队 ,3 人一组多 1 人 ,4 人一组多 2 人 ,5 人一组多 3 人 , 共多少人
        function fn19() {
            for (var i = 100; i < 200; i++) {
                if (i % 3 === 1 && i % 4 === 2 && i % 5 === 3) {
                    console.log(i);
                }
            }
        }
        // fn19()


        //  20. 两个自然数相除 , 商 3 余 10, 被除数 , 除数 , 商 , 余数的和是 163, 求被除数 , 除数
        function fn20() {
            for (var cs = 1; cs <= 150 / 4; cs++) {
                var bcs = 3 * cs + 10
                if (bcs + cs + 3 + 10 === 163) {
                    console.log(bcs, cs);
                }
            }
        }
        // fn20()


        //  21. 假设某人有 100,000  现金。 每经过一次路口需要进行一次交费。 
        //  交费规则为当他现金大于50,000  时每次需要交 5%
        //  如果现金小于等于 50,000  时每次交 5,000 。 请写一程序计算此人可以经过多少次这个路口
        function fn21() {
            // var money = 100000
            // var times = 0
            // while (money >= 5000) {
            //     if (money >= 50000) {
            //         money *= 0.95
            //     } else {
            //         money -= 5000
            //     }
            //     times++
            //     console.log(times, money);
            // }

            /* 尽量别写这种代码 */
            for (var money = 100000, times = 0; money >= 5000; money >= 50000 ? money *= 0.95 : money -= 5000) {
                times++
            }
            console.log(times);
        }
        fn21()

        //  22. 《张丘建算经》 成书于公元 5  世纪， 作者是北魏人． 书中最后一道题堪称亮点， 通常也被称为
        //  “ 百钱买百鸡 ” 问题，
        //   民间则流传着县令考问神童的佳话书中原文如下：鸡翁一值钱五，鸡母一值钱三，鸡雏三值钱一。
        //  百钱买百鸡，问鸡翁、鸡母、鸡雏各几何？ 
        function fn22() {
            for (var gj = 0; gj <= 100; gj++) {
                for (var mj = 0; mj <= 100; mj++) {
                    for (var xj = 0; xj <= 100; xj++) {
                        // 满足百钱买百鸡
                        if (gj * 5 + mj * 3 + xj * 1 / 3 === 100 && gj + mj + xj === 100) {
                            console.log(gj, mj, xj);
                        }
                    }
                }
            }
        }
        fn22()


    </script>
</body>

</html>